Federated query

ABSTRACT

Systems and methods for federated query are provided. A query configuration can be received that identifies data retrievable from a plurality of data sources. A query can also be received in an input query language. Based upon the query configuration, a first data source of the plurality of data sources can be identified that maintains data responsive to the received query. The received query can be translated from the input query language into a first native query language of the first data source, the first native query language being different from the input query language. First reply data responsive to the received query can be requested from the identified first data source using the translated query, and first reply data received from the identified first data source can be in a selected memory. At least one search result based upon the first reply data can be output.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application. No. 62/576,639 filed on Oct. 24, 2018, entitled “Federated Query Engine and Analytics Engine,” the entirety of which is hereby incorporated by reference.

BACKGROUND

Many industries, such as hydrocarbon refining and power generation, can rely heavily upon operation of machinery, and in some instances, continuous operation of machinery. It can be common to monitor selected operating parameters of one or more components of industrial machines to assess performance. Measurements of the operating parameters can provide an indication of the mechanical condition of a machine component, allowing preventative maintenance (e.g., repair, replacement, etc.) to be performed on the machine component prior to failure. This monitoring can provide one or more long term benefits, such as lower production costs, reduced equipment down time, improved reliability, and enhanced safety.

SUMMARY

Industrial data can be generated from multiple sources, such as sensors, analytical models, and the like. However, it can be challenging for operators and owners of industrial operations to extract value from this industrial data. One such challenge is data retrieval.

In general, federated search techniques have been developed for retrieval of data from multiple data sources. As an example, when performing a federated search, a user can provide a single search query that is distributed to the multiple data sources for response. Search results returned from the multiple sources can be subsequently presented to the user.

While federated search techniques have been developed in the context of transactional and consumer data, these approaches can be unsuitable for use with industrial data. In one aspect, traditional transactional data (e.g., logistics reports, maintenance logs, inventory logs, etc.) can be very different from industrial data (e.g., oil and gas industrial data). Notably, industrial data can be 10-100 times more voluminous, collected at 100-1000 times greater velocity, and can have 5-10 times more variety than conventional transactional data,. In another aspect, transactional data can be stored in a structured format, possessing a relatively high degree of organization. In contrast, a large portion of industrial data can be in the form of unstructured data, also referred to as “dark data,” such as text, images, audio and video. In a further aspect, industrial data can be distributed across an industrial computing environment. As a result, accessing, organizing, and processing varied, unstructured and/or distributed industrial data in a unified manner can be challenging.

In general, systems and methods are provided for federated search that allows users to discover, curate, accelerate, and share data maintained within one or more selected computer networks (e.g., one or more industrial computing networks) at any time, regardless of storage location or structure. The disclosed embodiments can allow data consumers (e.g., end users, applications, and applications developers) to easily access data in disparate formats and sources seamlessly with minimal effort and time.

Embodiments of the present disclosure provide a variety of advantages over existing federated query systems. In one aspect, search queries can be provided in a single structured query language (e.g., ANSI SQL) and translated into native query languages of the multiple data sources. This can allow data consumers to robustly query the multiple data sources without knowledge of their respective native query languages. In another aspect, responses to queries from multiple data sources can be filtered, transformed from one format (e.g., selected structured formats, selected unstructured formats, etc.) to another, and/or aggregated for output to a data consumer. In a further aspect, sub-second response times to input queries can be achieved. In an additional aspect, access to data that has been abstracted by layers of micro services can be facilitated.

In certain embodiments, the subject matter described herein relates to a federated query system and corresponding method of using the same.

In some implementations, the federated query engine can include a generic, scalable, and adaptable architecture, that is able to aggregate a multitude of disparate data sources to provide a consolidated view of vast quantities of data at various velocity, batches, and streams. Some implementations can accommodate a virtually unrestricted variety of analytics written in different languages and can be able to work together in orchestrations of complexity to provide meaningful insights in the right context and at the right time.

Non-transitory computer program products (i.e., physically embodied computer program products) are also described which can store instructions, that when executed by one or more data processors of one or more computing systems, causes at least one data processor to perform operations herein. Similarly, computer systems are also described that may include one or more data processors and memory coupled to the one or more data processors. The memory may temporarily or permanently store instructions that cause at least one processor to perform one or more of the operations described herein. In addition, methods can be implemented by one or more data processors either within a single computing system or distributed among two or more computing systems. Such computing systems can be connected and can exchange data and/or commands or other instructions or the like via one or more connections, including a connection over a network (e.g. the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, or the like), via a direct connection between one or more of the multiple computing systems, etc.

In an embodiment, a method for federated query is provided. The method can include receiving a query configuration identifying data retrievable from a plurality of data sources. The method can also include receiving a query in an input query language. The method can additionally include identifying, based upon the query configuration, a first data source of the plurality of data sources that maintains data responsive to the received query. The method can further include translating the received query from the input query language into a first native query language of the first data source, the first native query language being different from the input query language. The method can further include requesting first reply data responsive to the received query from the identified first data source using the translated query. The method can also include storing first reply data received from the identified first data source in a selected memory. The method can additionally include outputting at least one search result based upon the first reply data.

In another embodiment, the method can further include identifying, based upon the query configuration and the received query, a second data source of the plurality of data sources maintains data responsive to the received query. The method can also include translating the received query from the input query language into a second native query language of the second data source, the second native query language being different from the input query language. The method can additionally include requesting first reply data responsive to the received query from the first data source. The method can also include storing first reply data received from the second data source in a selected memory. The method can additionally include aggregating the first reply data received from the first data source and the first reply data received from a second data source, where the output search result can include the aggregated first responsive data.

In another embodiment, the method can further include identifying, based upon the query configuration, a second data source of the plurality of data, the second data source being configured to generate second reply data responsive to the received query based upon the first reply data. The method can additionally include requesting second reply data responsive to the received query from the second data source. The method can also include receiving the second reply data from the second data source. The method can additionally include outputting the at least one search result including the second reply data.

In another embodiment, the method can include modifying the received first reply data from a first data format to a second data format prior to storage in the selected memory, where requesting the second reply data can include identifying the selected memory storing the first reply data in the second data format.

In another embodiment, the first data format can be an unstructured data format and the second data format can be a structured data format.

In another embodiment, the method can include identifying a source of the received search request and outputting of the at least one search result after validating the source.

In another embodiment, the query configuration can further identify the selected memory from at least one of a short-term memory and a long-term memory, the short-term memory being configured to store the first reply data for a first time period and the long-term memory being configured to store the first reply data for a second time period greater than the second time period.

In another embodiment, the received query can be a single structured query.

In an embodiment, a system is provided. The system can include at least one data processor and at least one memory coupled to the at least one data processor. The at least one memory can store instructions to cause the at least one data processor to perform operations including receiving a query configuration identifying data retrievable from a plurality of data sources; receiving a query in an input query language; identifying, based upon the query configuration, a first data source of the plurality of data sources that maintains data responsive to the received query; translating the received query from the input query language into a first native query language of the first data source, the first native query language being different from the input query language; requesting first reply data responsive to the received query from the identified first data source using the translated query; storing first reply data received from the identified first data source in a selected one of the at least one memory; and outputting at least one search result based upon the first reply data.

In another embodiment, the operations can further include identifying, based upon the query configuration, a second data source of the plurality of data sources that maintains data responsive to the received query; translating the received query from the input query language into a second native query language of the second data source, the second native query language being different from the input query language; requesting first reply data responsive to the received query from the first data source; storing first reply data received from the second data source in a selected memory; and aggregating the first reply data received from the first data source and the first reply data received from a second data source, where the output search result can include the aggregated first responsive data.

In another embodiment, the operations can further include identifying, based upon the query configuration, a second data source of the plurality of data, the second data source being configured to generate second reply data responsive to the received query based upon the first reply data; requesting second reply data responsive to the received query from the second data source; receiving the second reply data from the second data source; and outputting the at least one search result can include the second reply data.

In another embodiment, the operations can further include modifying the received first reply data from a first data format to a second data format prior to storage in the selected memory, where requesting the second reply data can include identifying the selected memory storing the first reply data in the second data format.

In another embodiment, the first data format can be an unstructured data format and the second data format can be a structured data format.

In another embodiment, the operations can include identifying a source of the received search request and outputting of the at least one search result after validating the source.

In another embodiment, the query configuration further identifies the selected memory from at least one of a short-term memory and a long-term memory, the short-term memory being configured to store the first reply data for a first time period and the long-term memory being configured to store the first reply data for a second time period greater than the second time period.

In another embodiment, the received query can be a single structured query.

DESCRIPTION OF DRAWINGS

These and other features will be more readily understood from the following detailed description taken in conjunction with the accompanying drawings, in which:

FIG. 1 is a diagram illustrating one exemplary embodiment of an operating environment including a federated query system in communication with a plurality of data sources and a user computing device;

FIG. 2 is a diagram illustrating the federated query system of FIG. 1 in greater detail; and

FIG. 3 is a flow diagram illustrating one exemplary embodiment of a method for conducting a federated query.

It is noted that the drawings are not necessarily to scale. The drawings are intended to depict only typical aspects of the subject matter disclosed herein, and therefore should not be considered as limiting the scope of the disclosure.

DETAILED DESCRIPTION

Techniques have been developed for retrieval of data from multiple data sources, referred to as federated search. As an example, a user can employ a federated search engine by providing a single search query and the search engine can distribute the query to multiple data sources for response. Search results returned from the multiple data sources can be subsequently presented to the user. However, existing federated search techniques can encounter problems when applied to industrial data, as compared to traditional transactional data (e.g., retail, banking, etc.). In one aspect, the amount of industrial data generated at industrial sites, as well as the rate of industrial data generation, can be tens to thousands of times greater than that of traditional transactional data generated at a comparable consumer site (e.g., shopping malls, banking institutions, etc.), making retrieval of desired data relatively slow. In another aspect, industrial data can be stored across multiple, isolated storage devices, making it difficult to access. Such individual storage devices can also be difficult to query in a federated manner, as each can employ its own native search language. In a further aspect, industrial data can be stored in a variety of formats, making the industrial data difficult to use with different computing system (e.g., for display and/or further analysis) even when retrieved. Accordingly, improved federated search systems and corresponding methods of use are discussed. The improved federated search systems can be configured to translate a single search query into different search languages native to respective data sources. The format of search results returned from queries can also be modified to facilitate output to a user and/or use by other computing services (e.g., analytical models, applications, etc.) to generate further information responsive to a search query. The federated query system can also be configured to anticipate industrial data that may be required for response to a search query and store suitable industrial data so as to avoid the need for multiple, time-consuming data retrieval operations.

Embodiments of the disclosure are presented in the context of industrial data generated by industrial operations, such as oil and gas production. However, it can be understood that embodiments of the federated search system can be employed in any environment using any data without limit.

As discussed in greater detail below, a federated query system can be configured enable federated data access to industrial data that is maintained in different formats by a variety of different data sources, such as distributed silos, without normalization into a massive data warehouse. In certain embodiments, the federated query system can intelligently cache datasets based on actual and predicted availability needs, like usage patterns, usage types (dashboard, interactive visualization, streaming vs batch analytics, etc.). In another aspect, the federated query system can be configured to securely register the contents of industrial data stored across multiple logically and/or geographically distributed data sources for rapid queries, analytics, orchestrations, runtimes, etc. In a further aspect, the federated query system can be configured to enable query of industrial data across multiple data sources through a simple query language with federation.

FIG. 1 is a schematic block diagram illustrating an operating environment 100 including one exemplary embodiment of a federated search system 102 in communication with a plurality of data sources 104, one or more user computing devices 106, and one or more output devices 110. The plurality of data sources 104 can include any computing device capable of storing industrial data (e.g., databases) in any format (e.g., structured data, unstructured data, etc.). The user computing devices 106 can be any computing device capable of receiving input from a user and transmitting the input to the federated query system 102. Examples can include desktop computers, laptop computers, handheld computing devices computers (e.g., tablets, smartphones, etc.), and the like.

In one example, the plurality of data sources can include one or more historians 112A, 112B configured to receive industrial data from one or more sensors 114A, 114B, respectively. The sensors 114A, 114B can be configured to measure industrial data in the form of one or more operating parameters of respective industrial machines 116A, 116B. The number and type of the sensors 114A, 114B can vary based upon the operating parameter(s) that are intended to be measured. In one aspect, the one or more of the sensors 114A, 114B can take the form of a proximity probe for measurement of vibration, position, speed, direction of motion, and/or eccentricity. In another aspect, the one or more of the sensors 114A, 114B can take the form of one or more accelerometers for measurement of seismic vibration and acceleration. In a further aspect, the one or more of the sensors 114A, 114B can take the form of one or more temperature probes or pressure probes for measurement of temperature and pressure, respectively. It can be understood that the sensor types and corresponding operating parameters listed above are not exhaustive and embodiments of the one or more of the sensors 114A, 114B can include any sensor or combination of sensors suitable for measurement of operating parameters of interest.

The plurality of data sources 104 can include, alternatively or additionally, one or more computing devices executing computer programs capable of performing one or more operations upon received industrial data and outputting the results of such operations. As an example, the executed computer programs can be one or more micro services 120 (e.g., S1, S2, S3). The micro services 120 can be configured to receive data from the federated query system 102, other data sources (e.g., historians 112A, 112B), and combinations thereof.

In operation, the federated query system 102 can be configured to receive a query configuration. The query configuration can identify data retrievable from the plurality of data sources 104 (e.g., by a query service component 122). Upon receipt of a query input 128 from one of the user computing devices 106, based upon the query configuration, the federated query system 102 (e.g., query engine 124) can further identify one or more data sources of the plurality of data sources 104 that maintains industrial data responsive to the query input 128. If the received query input 128 is in a query language and/or structure that is different from that recognized by the identified data sources, the federated query system 102 can be configured to translate the query into respective native query languages recognized by each identified data source. A request for industrial data responsive to the received query input 128 can then be transmitted to the identified data sources.

Industrial data received in reply can be stored in a query memory 126 and a search result 130 can be transmitted to one or more of the user computing devices 106 and/or one or more output devices 110 (e.g., a display, another data storage device, a device capable of annunciation based upon the search result 130, etc.). Alternatively or additionally, industrial data stored by the query memory 126 can be further provided to the one or more micro services 120 for processing and the additional resulting industrial data can be returned to the federated query system 102 and provided as search result 130.

FIG. 2 illustrates the federated query system 102 in greater detail. As shown, the query service 122 can include components such as a data source registration 200, a query translation 202, and a query security 204. The query engine 124 can include components such as a query execution 210, a data aggregation 212, and a data transformation 214. The query memory 126 can include a short-term memory 220 and a long-term memory 224. Each of these components is discussed in greater detail below.

The data source registration 200 can be configured to receive the query configuration. As an example, the query configuration can be received by the data source registration 200 from an authorized user (e.g., an administrator, owner, etc.) of the federated query system 102. The query configuration can identify data retrievable from each of the plurality of data sources 104. In certain embodiments, a single data source can maintain the industrial data responsive to the query input 128. In other embodiments, multiple data sources can maintain the industrial data responsive to the query input 128. In further embodiments, the industrial data responsive to the query input 128 can be generated by operations performed upon one or more industrial data retrieved from other ones of the plurality of data sources 104 by one or more of the micro services 120 (e.g., stored by the federated query system 102 in the query memory 126). The query configuration can be received periodically and/or updated in real time based upon industrial information stored by the plurality of data sources 104.

The query translation 202 can be configured to translate the query input 128. As an example, the query configuration can include information regarding a native query language and/or structure recognized by each of the plurality of data sources 104. If the query language and/or structure of the query input 128 is different from a native query language of an identified data source from which industrial data responsive to the query input 128 is to be requested, the query translation 202 can translate between the two.

The query security 204 can be configured to verify a source of the received query input 128. In certain embodiments, the verification can be performed based upon validation of one or more credentials (e.g., a username and password, two-factor authentication, network address of the computing device transmitting the input query, etc.). In certain embodiments, the query security can be omitted or selectively deactivated.

The query execution 210 can be configured to receive the query input 128 from one or more of the user computing devices 106. Embodiments of the query input 128 can be a single structured query. In certain embodiments, when the query security 204 is present and active, the query security can command the query execution 210 to execute the received query input 128 after verification. Alternatively, if the received query input 128 is not verified by the query security 204, the query security 204 can command the query execution 210 to refrain from executing the received query input 128.

When executing the query input 128, the query execution 210 can pass the received query input 128 to the data source registration 200. The data source registration 200 can employ the query configuration to identify the data sources of the plurality of data sources 104 that are responsive to the received query input 128 and return the identified data sources to the query execution 210.

The query execution 210 can also pass the received query input 128 to the data source registration 200. query translation 202 to determine whether translation is necessary. If so, the query execution 210 can receive, from the query translation 202, the input query translated into native query languages corresponding to the identified data sources. If not, the query execution 210 can proceed on the basis of the received query input 128.

Subsequently, the query execution 210 can request industrial data responsive to the query input 128 to the identified data sources. The request can employ the query language and structure of the received query input 128 or the native query language and structure of the identified data sources, as necessary.

Data aggregation 212 can combine data received from multiple data sources, as necessary. In certain embodiments, the data source registration 200 can identify two or more data sources that are responsive to the query input 128. Under these circumstances, it can be desirable to provide the search result 130 in the form of an aggregated result combining the industrial data retrieved from the two or more data sources. For example, the aggregation can be a mathematical combination (e.g., sums, differences, averages, and other statistical parameters, as necessary).

Data transformation 214 can translate industrial data received in one format to another format. In one aspect, industrial data received in one structured data format can be translated into another structured data format. In another aspect, industrial data received in a structured data format can be translated into an unstructured data format. In another aspect, industrial data received in an unstructured data format can be translated into a structured data format.

In an embodiment, the query execution 210 can identify, based upon the query configuration and the query input 128, that industrial data responsive to the query input 128 can be obtained from one of the micro services 120 (e.g., by operating upon one or more industrial data stored by the query memory 126). For example, one of the micro services 120 can be configured to determine an alert status for one of the industrial machines 116A, 116B based upon one or more operating parameters exceeding respective threshold amounts. If the micro service 120 of interest is incapable of operating upon the stored industrial data as represented in a current data format, the data transformation 214 can employ the query configuration to determine another data format suitable for use by the micro services 120, transform the industrial data into that suitable data format, and store the transformed industrial data in the query memory 126. Subsequently, the transformed industrial data can be retrieved from the query memory 126 for use by the micro service 120 (and/or transmitted to the micro service 120) in generating industrial data responsive to the query input 128. In one example, unstructured data can include audio data, video data, binary data, etc. In another example, structured data can be in the form of XML JSON, and the like.

Industrial data stored within the query memory 126 can be maintained in at least one of a short-term memory 220 and a long-term memory 222. The short-term memory can be configured to store industrial data for a first predetermined time period and the long-term memory can be configured to store industrial data for a second predetermined time period. In general, retrieving industrial data from certain ones of the plurality of data sources 104 (e.g., historians 112A, 112B can be relatively time consuming. If industrial data were requested from the plurality of data sources 104 each time the industrial data were to be output or operated upon by one or more of the micro services 120, significant delay can be incurred when responding to the query input 128.

Accordingly, industrial data can be selected for storage by the query execution 210 based upon the query configuration and the query input 128. As an example, under circumstances where industrial data responsive to the query input 128 is to be output a single time, or employed for a relatively short time duration for operations by one or more of the micro services 120, that industrial data can be stored in the short-term memory 220. In another example, under circumstances where industrial data responsive to the input query is to be output multiple times, or employed for a relatively long time duration for operations by one or more of the micro services 120, that industrial data can be stored in the long-term memory 222.

After storage of industrial data responsive to the query input 128 in the selected memory (e.g., short-term memory 220 and/or long-term memory 222, the query execution 210 can output this responsive industrial data as one or more search result 130. In one embodiment, the output of the search result 130 can include transmitting the responsive industrial data to one or more of the user computing devices 106. In another embodiment, the output of the search result 130 can include transmitting the responsive industrial data to one or more of the output devices 110. The output devices 110 can include displays and computing devices other than the user computing devices 106.

A flow diagram illustrating one exemplary embodiment of a method 300 for federated query employing the federated query system 102 is illustrated in FIG. 3. As shown, the method 300 includes operations 302-316. However, alternative embodiments of the method can include greater or fewer operations and the operations can be performed in an order different than that illustrated in FIG. 3.

In operation 302, a query configuration identifying data retrievable from a plurality of data sources is received (e.g., by the data source registration 200). In operation 304, a query (e.g., query input 128) is received in an input query language (e.g., by the query execution 210. The query execution 210 can identify, based upon the query configuration, a first data source of the plurality of data sources 104 (e.g., historian 112A, 112B; micro services 120) that maintains data responsive to the received query input 128. In operation 310, the received query input 128 can be translated (e.g., by query translation 202) from the input query language (e.g., language and/or structure) into a first native query language (e.g., language and/or structure) of the first data source, where the first native query language can be different from the input query language. In operation 312, a first reply data responsive to the received query can be requested (e.g., by the query execution 210) from the identified first data source using the translated query. In operation 314, first reply data received from the identified first data source can be stored in a selected memory (e.g., short-term memory 220 and/or long-term memory 222). In operation 316, at least one search result based upon the first reply data can be output. As an example, one or more search results 130 can be transmitted to any combination of user combination of user computing devices 106 and output devices 110.

Embodiments of the current subject matter can provide a solution to the explosion in the volume, velocity and variety of datasets in the industrial world. Current information systems may not be able to handle even 1% of the workloads required for routine processing in industrial internet of things systems. In addition, in industrial systems, data collection has traditionally been sporadic and highly disjointed and without readily available solutions to combine data in disparate sources exist.

Exemplary technical effects of the methods, systems, and devices described herein include, by way of non-limiting example, a federated query system that facilitates access to data (e.g., industrial data) by data consumers (e.g., end-users, applications, and applications developers) in disparate formats and sources seamlessly with minimal effort and time. In another aspect, the federated query system can provide data communication via a single, secure query memory, and can allow, for example, an abstraction of data such that data consumers are shielded from technical complexities of underlying systems that store industrial data. In a further aspect, the federated query system can provide the ability to access and query data from any data source, as well as the ability to easily filter, join, transform, and aggregate data. In an additional aspect, the federated query system can provide the ability to register one or more of a plurality of data sources. In another aspect, the federated query system can provide intelligent storage (e.g., caching) of retrieved industrial data responsive to a query in short- and/or long-term storage, which can allow for achievement of sub-second response time. In a further embodiment, the federated query system can allow for data aggregation across a plurality of data sources using a single structured query (e.g., a single SQL statement, such as ANSI SQL).

Certain exemplary embodiments have been described to provide an overall understanding of the principles of the structure, function, manufacture, and use of the systems, devices, and methods disclosed herein. One or more examples of these embodiments have been illustrated in the accompanying drawings. Those skilled in the art will understand that the systems, devices, and methods specifically described herein and illustrated in the accompanying drawings are non-limiting exemplary embodiments and that the scope of the present invention is defined solely by the claims. The features illustrated or described in connection with one exemplary embodiment may be combined with the features of other embodiments. Such modifications and variations are intended to be included within the scope of the present invention. Further, in the present disclosure, like-named components of the embodiments generally have similar features, and thus within a particular embodiment each feature of each like-named component is not necessarily fully elaborated upon.

The subject matter described herein can be implemented in analog electronic circuitry, digital electronic circuitry, and/or in computer software, firmware, or hardware, including the structural means disclosed in this specification and structural equivalents thereof, or in combinations of them. The subject matter described herein can be implemented as one or more computer program products, such as one or more computer programs tangibly embodied in an information carrier (e.g., in a machine-readable storage device), or embodied in a propagated signal, for execution by, or to control the operation of, data processing apparatus (e.g., a programmable processor, a computer, or multiple computers). A computer program (also known as a program, software, software application, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file. A program can be stored in a portion of a file that holds other programs or data, in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.

The processes and logic flows described in this specification, including the method steps of the subject matter described herein, can be performed by one or more programmable processors executing one or more computer programs to perform functions of the subject matter described herein by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus of the subject matter described herein can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).

Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processor of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, (e.g., EPROM, EEPROM, and flash memory devices); magnetic disks, (e.g., internal hard disks or removable disks); magneto-optical disks; and optical disks (e.g., CD and DVD disks). The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, the subject matter described herein can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, (e.g., a mouse or a trackball), by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well. For example, feedback provided to the user can be any form of sensory feedback, (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user can be received in any form, including acoustic, speech, or tactile input.

The techniques described herein can be implemented using one or more modules. As used herein, the term “module” refers to computing software, firmware, hardware, and/or various combinations thereof. At a minimum, however, modules are not to be interpreted as software that is not implemented on hardware, firmware, or recorded on a non-transitory processor readable recordable storage medium (i.e., modules are not software per se). Indeed “module” is to be interpreted to always include at least some physical, non-transitory hardware such as a part of a processor or computer. Two different modules can share the same physical hardware (e.g., two different modules can use the same processor and network interface). The modules described herein can be combined, integrated, separated, and/or duplicated to support various applications. Also, a function described herein as being performed at a particular module can be performed at one or more other modules and/or by one or more other devices instead of or in addition to the function performed at the particular module. Further, the modules can be implemented across multiple devices and/or other components local or remote to one another. Additionally, the modules can be moved from one device and added to another device, and/or can be included in both devices.

The subject matter described herein can be implemented in a computing system that includes a back-end component (e.g., a data server), a middleware component (e.g., an application server), or a front-end component (e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the subject matter described herein), or any combination of such back-end, middleware, and front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.

Approximating language, as used herein throughout the specification and claims, may be applied to modify any quantitative representation that could permissibly vary without resulting in a change in the basic function to which it is related. Accordingly, a value modified by a term or terms, such as “about,” “approximately,” and “substantially,” are not to be limited to the precise value specified. In at least some instances, the approximating language may correspond to the precision of an instrument for measuring the value. Here and throughout the specification and claims, range limitations may be combined and/or interchanged, such ranges are identified and include all the sub-ranges contained therein unless context or language indicates otherwise.

One skilled in the art will appreciate further features and advantages of the invention based on the above-described embodiments. Accordingly, the present application is not to be limited by what has been particularly shown and described, except as indicated by the appended claims. All publications and references cited herein are expressly incorporated by reference in their entirety. 

1. A method, comprising: receiving a query configuration identifying data retrievable from a plurality of data sources; receiving a query in an input query language; identifying, based upon the query configuration, a first data source of the plurality of data sources that maintains data responsive to the received query; translating the received query from the input query language into a first native query language of the first data source, the first native query language being different from the input query language; requesting first reply data responsive to the received query from the identified first data source using the translated query; storing first reply data received from the identified first data source in a selected memory; and outputting at least one search result based upon the first reply data.
 2. The method of claim 1, further comprising: identifying, based upon the query configuration and the received query, a second data source of the plurality of data sources maintains data responsive to the received query; translating the received query from the input query language into a second native query language of the second data source, the second native query language being different from the input query language; requesting first reply data responsive to the received query from the first data source; storing first reply data received from the second data source in a selected memory; and aggregating the first reply data received from the first data source and the first reply data received from a second data source, wherein the output search result includes the aggregated first responsive data.
 3. The method of claim 1, further comprising: identifying, based upon the query configuration, a second data source of the plurality of data, the second data source being configured to generate second reply data responsive to the received query based upon the first reply data; requesting second reply data responsive to the received query from the second data source; receiving the second reply data from the second data source; and outputting the at least one search result including the second reply data.
 4. The method of claim 3, further comprising modifying the received first reply data from a first data format to a second data format prior to storage in the selected memory, wherein requesting the second reply data includes identifying the selected memory storing the first reply data in the second data format.
 5. The method of claim 4, wherein the first data format is an unstructured data format and the second data format is a structured data format.
 6. The method of claim 1, further comprising identifying a source of the received search request and outputting of the at least one search result after validating the source.
 7. The method of claim 1, wherein the query configuration further identifies the selected memory from at least one of a short-term memory and a long-term memory, the short-term memory being configured to store the first reply data for a first time period and the long-term memory being configured to store the first reply data for a second time period greater than the second time period.
 8. The method of claim 1, wherein the received query is a single structured query.
 9. A system comprising: at least one data processor; and at least one memory coupled to the at least one data processor, the at least one memory storing instructions to cause the at least one data processor to perform operations comprising: receiving a query configuration identifying data retrievable from a plurality of data sources; receiving a query in an input query language; identifying, based upon the query configuration, a first data source of the plurality of data sources that maintains data responsive to the received query; translating the received query from the input query language into a first native query language of the first data source, the first native query language being different from the input query language; requesting first reply data responsive to the received query from the identified first data source using the translated query; storing first reply data received from the identified first data source in a selected one of the at least one memory; and outputting at least one search result based upon the first reply data.
 10. The system of claim 9, the operations further comprising: identifying, based upon the query configuration, a second data source of the plurality of data sources that maintains data responsive to the received query; translating the received query from the input query language into a second native query language of the second data source, the second native query language being different from the input query language; requesting first reply data responsive to the received query from the first data source; storing first reply data received from the second data source in a selected memory; and aggregating the first reply data received from the first data source and the first reply data received from a second data source, wherein the output search result includes the aggregated first responsive data.
 11. The system of claim 9, the operations further comprising: identifying, based upon the query configuration, a second data source of the plurality of data, the second data source being configured to generate second reply data responsive to the received query based upon the first reply data; requesting second reply data responsive to the received query from the second data source; receiving the second reply data from the second data source; and outputting the at least one search result including the second reply data.
 12. The system of claim 11, the operations further comprising modifying the received first reply data from a first data format to a second data format prior to storage in the selected memory, wherein requesting the second reply data includes identifying the selected memory storing the first reply data in the second data format.
 13. The system of claim 12, wherein the first data format is an unstructured data format and the second data format is a structured data format.
 14. The system of claim 9, the operations further comprising identifying a source of the received search request and outputting of the at least one search result after validating the source.
 15. The system of claim 9, wherein the query configuration further identifies the selected memory from at least one of a short-term memory and a long-term memory, the short-term memory being configured to store the first reply data for a first time period and the long-term memory being configured to store the first reply data for a second time period greater than the second time period.
 16. The system of claim 9, wherein the received query is a single structured query. 